任何后端的核心都是指令选择，LLVM实现了几种方法。本章中，我们将通过选择有向无环图(DAG)和全局指令选择来实现指令选择。

本章中，将学习以下主题:

\begin{itemize}
\item
定义调用约定的规则:如何在目标描述中，描述调用规则

\item
通过选择DAG进行指令选择:如何使用图数据结构实现指令选择

\item
添加寄存器和指令信息:如何访问目标描述中的信息，以及需要提供哪些信息

\item
将空框架放置到位:介绍堆栈布局和函数的序言

\item
生成机器指令:如何将机器指令最终写入目标文件或汇编文本

\item
创建目标计算机和子目标:如何配置后端

\item
全局指令选择:指令选择的另一种方法

\item
进一步扩展后端:提供了一些关于后续步骤的指导
\end{itemize}

本章结束时，将了解如何创建一个LLVM后端来翻译简单的指令。还将获得通过选择DAG和全局指令选择开发指令选择的知识，并且将熟悉为使指令选择工作而必须实现的支持类。









































